package controller

import (
	"github.com/gin-gonic/gin"
	"memo_project/dao"
	"memo_project/models"
)

/*
url           -->   controller   -->    logic    --> 	model
请求来了    -->   控制器        -->    业务逻辑   -->    模型层的增删改查
*/

func IndexHandler(c *gin.Context) {
	c.HTML(200, "index.html", nil)
}

func CreateATodo(c *gin.Context) {
	var todo models.Todo
	c.BindJSON(&todo)
	err := dao.DB.Create(&todo).Error
	if err != nil {
		c.JSON(200, gin.H{
			"error": err.Error(),
		})
	} else {
		c.JSON(200, gin.H{
			"code": 2000,
			"msg":  "success",
			"data": todo,
		})
	}
}

func GetTodoList(c *gin.Context) {
	var todoList []models.Todo
	err := dao.DB.Find(&todoList).Error
	if err != nil {
		return
	} else {
		c.JSON(200, todoList)
	}
}

func UpdateATodo(c *gin.Context) {
	id, ok := c.Params.Get("id")
	if !ok {
		c.JSON(200, gin.H{
			"error": "无效的id",
		})
		return
	}
	var todo models.Todo
	err := dao.DB.Where("id=?", id).First(&todo).Error
	if err != nil {
		c.JSON(200, gin.H{
			"error": err.Error(),
		})
		return
	}
	c.BindJSON(&todo)
	err = dao.DB.Save(&todo).Error
	if err != nil {
		c.JSON(200, gin.H{
			"error": err.Error(),
		})
	} else {
		c.JSON(200, todo)
	}

}

func DeleteById(c *gin.Context) {
	id, ok := c.Params.Get("id")
	if !ok {
		c.JSON(200, gin.H{
			"error": "无效的id",
		})
		return
	}
	err := dao.DB.Where("id=?", id).Delete(models.Todo{}).Error
	if err != nil {
		c.JSON(200, gin.H{
			"error": err.Error(),
		})
	} else {
		c.JSON(200, gin.H{id: "deleted"})
	}
}
